Many popular computer programs are designed to be used in a variety of different countries. When a program is to be used in a given country, it is desirable for the user to be able to interact with the program by means of the user's native language. Thus, for example, an American user would expect to see interface components such as menu commands, dialogue boxes and warnings presented in the English language, whereas a French user would prefer to have these same components appear in the French language. One manner in which this objective can be accomplished is to develop a separate version of the program in each language. However, this approach presents an unnecessary duplication of development effort, and is prone to error, since each different version of the program needs to be tested and debugged.
To avoid the need for multiple versions of a program in different languages, the concept of internationalization has been incorporated into program development. An internationalized program is based upon a core block of executable code that is independent of language, and that supports localization of language-related features. Localization is the adaptation of a software product for use in multiple regions of the world. Localization of software can include translating user-interface text, resizing text-related graphical elements, and modifying images and sound to conform to local conventions.
The present invention is particularly concerned with the localization of computer operating systems. Popular operating systems, such as the Mac OS® developed by Apple Computer, Inc. and Microsoft Windows® developed by Microsoft Corporation, support localization to varying degrees. For example, during the initial installation of an operating system, the user is typically provided with the opportunity to designate the language in which textual components of the user interface will appear. The user may also have the opportunity to select other regional settings, which may determine the formatting for currency, date and time, and the like. After installation, the user may also be able to switch among different preferred languages.
In the past, when the user selected a language other than the default language in which the program was developed, certain elements of the user interface, such as menu bars and warning labels, would change to the selected language. However, file system elements, such as folder names and directory names, were not supported by this change. This limitation was due to the fact that elements of the file system, such as files and folders, are stored in their original language at the file system layer of the operating system. There are a number of different ways in which a user can access this layer to view files stored in the file system. One way is by means of a desktop manager, such as the Finder in the Mac OS, or a browser, such as Explorer in the Microsoft Windows operating system. Another way to look at files is by means of an “Open” panel that is typically provided within the context of an application program. A third way to look at files is through a “Find” or “Search” utility. As a further complicating factor, the same files stored on a central server may be simultaneously viewed by different users who have designated respectively different preferred languages. These various concerns made it difficult to support localization of file system elements in a manner that can accommodate all of the various ways to look at files. Consequently, the traditional approach has been to have a different file system for each language to be supported. As noted above, such duplication is undesirable for a number of reasons.
Accordingly, it is an objective of the present invention to provide localized views of file systems that enable multiple simultaneous localizations of a file to take place and that minimizes the impact on performance of the computer operating system. It is further desirable to provide these features in a manner which readily facilitates the ability of program developers to localize their products in a manner supported by the operating system.